From 8f6181b6f8dd82aa1ab1288cc7f2fd05d4a2519f Mon Sep 17 00:00:00 2001
From: Matt Weber <matthew.weber@rockwellcollins.com>
Date: Mon, 1 May 2017 19:55:07 -0500
Subject: [PATCH] musl compat canonicalize_file_name()

Adds an equivalent of canonicalize_file_name
using realpath().

Bug report (origin of this patch):
https://bugs.freedesktop.org/show_bug.cgi?id=99944

Bug report has been updated with suggestion to not use inline.

Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
---
 configure.ac                |  2 ++
 src/libqmi-glib/qmi-utils.c | 15 +++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/configure.ac b/configure.ac
index c56fa3e..d835db4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -80,6 +80,8 @@ AC_SUBST(GLIB_LIBS)
 GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
 AC_SUBST(GLIB_MKENUMS)
 
+AC_CHECK_FUNCS([canonicalize_file_name])
+
 dnl qmi-firmware-update is optional, enabled by default
 AC_ARG_ENABLE([firmware-update],
               AS_HELP_STRING([--enable-firmware-update],
diff --git a/src/libqmi-glib/qmi-utils.c b/src/libqmi-glib/qmi-utils.c
index 29e5f22..26aff9e 100644
--- a/src/libqmi-glib/qmi-utils.c
+++ b/src/libqmi-glib/qmi-utils.c
@@ -34,6 +34,21 @@
 #include "qmi-utils.h"
 #include "qmi-error-types.h"
 
+#ifndef HAVE_CANONICALIZE_FILE_NAME
+#include <limits.h>
+static char * canonicalize_file_name(const char *path)
+{
+       char buf[PATH_MAX] = { };
+
+       snprintf(buf, sizeof(buf) - 1, "%s", path);
+
+       if (!realpath(path, buf))
+               return NULL;
+
+       return strdup(buf);
+}
+#endif
+
 /**
  * SECTION:qmi-utils
  * @title: Common utilities
-- 
1.9.1

